package com.ruoyi.quartz.task;

import org.springframework.stereotype.Component;
import org.springframework.beans.factory.annotation.Autowired;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.ruoyi.system.service.ISysDatabaseWjhService;
import com.ruoyi.system.domain.SysDatabaseWjh;
import com.ruoyi.common.utils.StringUtils;

/**
 * 数据库信息模拟创建定时任务
 * 
 * @author ruoyi
 */
@Component("databaseSimulationTask")
public class DatabaseSimulationTask
{
    private static final Logger log = LoggerFactory.getLogger(DatabaseSimulationTask.class);
    
    @Autowired
    private ISysDatabaseWjhService sysDatabaseWjhService;
    
    /**
     * 模拟创建数据库信息
     */
    public void simulateDatabaseCreation()
    {
        try {
            // 使用日志替代打印语句
            log.info("开始执行数据库信息模拟创建任务");
            
            // 创建模拟数据库信息对象
            SysDatabaseWjh databaseInfo = generateMockDatabaseInfo();
            
            // 插入数据库
            int result = sysDatabaseWjhService.insertSysDatabaseWjh(databaseInfo);
            
            if (result > 0) {
                log.info("数据库信息模拟创建成功：{}，ID：{}", 
                    databaseInfo.getDatabaseName(), databaseInfo.getDatabaseId());
            } else {
                log.warn("数据库信息模拟创建失败");
            }
        } catch (Exception e) {
            log.error("执行数据库信息模拟创建任务时发生异常", e);
        }
    }
    
    /**
     * 生成模拟数据库信息
     */
    private SysDatabaseWjh generateMockDatabaseInfo() {
        SysDatabaseWjh databaseInfo = new SysDatabaseWjh();
        
        // 生成随机数用于创建唯一名称
        long randomNum = System.currentTimeMillis() % 10000;
        
        // 设置数据库名称
        databaseInfo.setDatabaseName("模拟数据库_" + randomNum);
        
        // 随机设置数据库类型（0=关系型，1=非关系型）
        String[] dbTypes = {"0", "1"};
        String dbType = dbTypes[(int)(Math.random() * dbTypes.length)];
        databaseInfo.setDbType(dbType);
        
        // 根据数据库类型设置图标地址
        if ("0".equals(dbType)) {
            databaseInfo.setIcon("/icons/relational_db.png");
        } else {
            databaseInfo.setIcon("/icons/nosql_db.png");
        }
        
        // 随机设置部署方式
        String[] deployTypes = {"单机","分布式"};
        String deployType = deployTypes[(int)(Math.random() * deployTypes.length)];
        databaseInfo.setDeployType(deployType);
        
        // 设置描述信息
        databaseInfo.setDescription("这是一条模拟生成的数据库信息记录，ID: " + randomNum);
        
        // 设置状态为正常
        databaseInfo.setStatus("0");
        
        // 设置删除标志为存在
        databaseInfo.setDelFlag("0");
        
        // 设置创建人和创建时间会由 BaseEntity 自动处理
        
        return databaseInfo;
    }
}